package com.endesa.arqame4j.parqweb.dao;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import com.endesa.arqame4j.parqweb.model.Caracteristica;


/**
 * Clase de pega para testear el servicio de informes.
 * @author Rmn Mdl
 */
public class CaracteristicasDAOMock implements CaracteristicasDAO {

    /**
     * Para emular la base de datos.
     */
    private Map <Long, Caracteristica> consulta;

    /**
     * Rellena la lista.
     */
    public CaracteristicasDAOMock() {

        Caracteristica ct1 = new Caracteristica(1L, "Caracteristicas 1");
        Caracteristica ct2 = new Caracteristica(2L, "Caracteristicas 2");
        Caracteristica ct3 = new Caracteristica(3L, "Caracteristicas 3");

        consulta = new HashMap <Long, Caracteristica>();
        consulta.put(1L, ct1);
        consulta.put(2L, ct2);
        consulta.put(3L, ct3);
    }

    /**
     * @param entidad objeto a actualizar.
     * @return Devuelve 1.
     */
    public int actualizar(final Object entidad) {
        Caracteristica caracteristica = (Caracteristica)entidad;
        Long indice = caracteristica.getId();
        consulta.put(indice, caracteristica);
        return 1;
    }

    /**
     * Devuelve la lista.
     * @param objeto objeto a insertar.
     * @return lista con todos los objetos.
     */
    public Collection<Caracteristica> consultar(Object... objeto) {
        return consulta.values();
    }

    /**
     * @param id Id del objeto a buscar.
     * @param clase objetos a buscar.
     * @return objeto que tiene ese id
     */
    public Object consultarPorId(final Long id, Class... clase) {
        return consulta.get(id);
    }

    /**
     * @param entidad objeto a borrar.
     * @return Devuelve 1.
     */
    public int eliminar(final Object entidad) {
        Caracteristica caracteristica = (Caracteristica) entidad;
        Long indice = caracteristica.getId();
          consulta.remove(indice);
        return 1;
    }

    /**
     * @param entidad objeto a insertar.
     * @return Devuelve 1.
     */
    public long insertar(final Object entidad) {
        Caracteristica caracteristica = (Caracteristica) entidad;
        consulta.put(caracteristica.getId(), caracteristica);
        return 1;
    }
}
